package sifeap.entities.solicitudescredito;

import java.io.Serializable;
import java.util.List;

import javax.persistence.Cacheable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;


/**
 * The persistent class for the tiposcredito database table.
 * 
 */
@Entity
@Cacheable(false)
@Table(name="tiposcredito", schema="sifeap")
public class TipoCredito implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@Column(unique=true, nullable=false, precision=8)
	private Long idTipoCredito;

	@Column(nullable=false, precision=3)
	private int cuotasMaximas;
	
	@Column(length=30)
	private String idTipoCreditoSolidario;

	@Column(nullable=false, length=30)
	private String nombre;

	//bi-directional many-to-one association to SolicitudCredito
	@OneToMany(mappedBy="tiposcredito")
	private List<SolicitudCredito> solicitudescreditos;

	public TipoCredito() {
	}

	public Long getIdTipoCredito() {
		return this.idTipoCredito;
	}

	public void setIdTipoCredito(Long idTipoCredito) {
		this.idTipoCredito = idTipoCredito;
	}
	
	public int getCuotasMaximas() {
		return this.cuotasMaximas;
	}

	public void setCuotasMaximas(int cuotasMaximas) {
		this.cuotasMaximas = cuotasMaximas;
	}

	public String getIdTipoCreditoSolidario() {
		return this.idTipoCreditoSolidario;
	}

	public void setIdTipoCreditoSolidario(String idTipoCreditoSolidario) {
		this.idTipoCreditoSolidario = idTipoCreditoSolidario;
	}

	public String getNombre() {
		return this.nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public List<SolicitudCredito> getSolicitudescreditos() {
		return this.solicitudescreditos;
	}

	public void setSolicitudescreditos(List<SolicitudCredito> solicitudescreditos) {
		this.solicitudescreditos = solicitudescreditos;
	}

	public SolicitudCredito addSolicitudescredito(SolicitudCredito solicitudescredito) {
		getSolicitudescreditos().add(solicitudescredito);
		solicitudescredito.setTiposcredito(this);

		return solicitudescredito;
	}

	public SolicitudCredito removeSolicitudescredito(SolicitudCredito solicitudescredito) {
		getSolicitudescreditos().remove(solicitudescredito);
		solicitudescredito.setTiposcredito(null);

		return solicitudescredito;
	}
	
	 // This must return true for another Foo object with same key/id.
    public boolean equals(Object other) {
        return other instanceof TipoCredito && (idTipoCredito != null) ? idTipoCredito.equals(((TipoCredito) other).getIdTipoCredito()) : (other == this);
    }

    // This must return the same hashcode for every Foo object with the same key.
    public int hashCode() {
        return idTipoCredito != null ? this.getClass().hashCode() + idTipoCredito.hashCode() : super.hashCode();
    }
}